SpringBoot 代码混淆真香,再也不用担心反编译代码泄露... |
您所在的位置:网站首页 › jar 混淆 › SpringBoot 代码混淆真香,再也不用担心反编译代码泄露... |
编译
简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥。 比较常用的反编译工具 JD-GUI ,直接把编译好的jar丢进去,大部分都能反编译看到源码: 那如果不想给别人反编译看自己写的代码呢? 怎么做? 混淆该篇玩的代码混淆 ,是其中一种手段。Java技术进阶路线:https://www.yoodb.com/ 我给你看,但你反编译看到的不是真正的代码。 先看一张效果示例图 : 开搞 正文先看一下我们混淆一个项目代码,要做啥? 第一步,在项目路径下,新增一份文件proguard.cfg: proguard.cfg #指定Java的版本 -target 1.8 #proguard会对代码进行优化压缩,他会删除从未使用的类或者类成员变量等 -dontshrink #是否关闭字节码级别的优化,如果不开启则设置如下配置 -dontoptimize #混淆时不生成大小写混合的类名,默认是可以大小写混合 -dontusemixedcaseclassnames # 对于类成员的命名的混淆采取唯一策略 -useuniqueclassmembernames #混淆时不生成大小写混合的类名,默认是可以大小写混合 -dontusemixedcaseclassnames #混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代 -adaptclassstrings #对异常、注解信息予以保留 -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod # 此选项将保存接口中的所有原始名称(不混淆)--> -keepnames interface ** { *; } # 此选项将保存所有软件包中的所有原始接口文件(不进行混淆) #-keep interface * extends * { *; } #保留参数名,因为控制器,或者Mybatis等接口的参数如果混淆会导致无法接受参数,xml文件找不到参数 -keepparameternames # 保留枚举成员及方法 -keepclassmembers enum * { *; } # 不混淆所有类,保存原始定义的注释- -keepclassmembers class * { @org.springframework.context.annotation.Bean *; @org.springframework.beans.factory.annotation.Autowired *; @org.springframework.beans.factory.annotation.Value *; @org.springframework.stereotype.Service *; @org.springframework.stereotype.Component *; } #忽略warn消息 -ignorewarnings #忽略note消息 -dontnote #打印配置信息 -printconfiguration -keep public class com.example.myproguarddemo.MyproguarddemoApplication { public static void main(java.lang.String[]); }注意点: 其余的看注释,可以配置哪些类不参与混淆,哪些枚举保留,哪些方法名不混淆等等。 第二步,在pom文件上 加入proguard 混淆插件 : build标签里面改动加入一下配置 com.github.wvengen proguard-maven-plugin 2.6.0 package proguard ${project.build.finalName}.jar ${project.build.finalName}.jar true ${project.basedir}/proguard.cfg ${java.home}/lib/rt.jar ${java.home}/lib/jce.jar ${java.home}/lib/jsse.jar !META-INF/**,!META-INF/versions/9/**.class ${project.basedir}/target org.springframework.boot spring-boot-maven-plugin repackage com.example.myproguarddemo.MyproguarddemoApplication注意点: 然后可以看到: 然后点击package,正常执行编译打包流程就可以 : 然后可以看到jar的生成: 看看效果: 好了,该篇就到这。 作者:小目标青年 https://blog.csdn.net/qq_35387940 公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理! 最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群! Java精选面试题(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题! ------ 特别推荐 ------ 特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。 点击“阅读原文”,了解更多精彩内容! 文章有帮助的话,点在看,转发吧! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |